/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.graficoDecorator;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JOptionPane;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import pessoas.collection.Contatos;
import pessoas.interfaces.IComponenteGraficoDecorator;
import pessoas.interfaces.IGrafico;

/**
 *
 * @author Bush
 */
public class GraficoColunas implements IGrafico,IComponenteGraficoDecorator {

    private DefaultCategoryDataset ds;
    private JFreeChart grafico;
    
    @Override
    public JFreeChart exibirGrafico(Contatos contatos) {
        constroiGrafico(contatos);
        return grafico;
    }
    
    @Override
    public JFreeChart operacao(Contatos contatos) {
        constroiGrafico(contatos);
        return grafico;
    }
    
    public void constroiGrafico(Contatos contatos) {
        try {
            ds = new DefaultCategoryDataset();
            for (int i = 0; i < contatos.getContatos().size(); i++) {
                String oper = contatos.getContatos().get(i).getOperadora();
                String uf = contatos.getContatos().get(i).getUf();
                int valor = contatos.quantidadeContatosUf(contatos, oper, uf);
                ds.addValue(valor, oper, uf);
            }
            // cria o gráfico
            grafico = ChartFactory.createBarChart("Gráfico Estatístico", "UF",
                    "Quantidade", ds, PlotOrientation.VERTICAL, true, true, false);

            OutputStream arquivo;
            arquivo = new FileOutputStream("png/grafico.png");
            ChartUtilities.writeChartAsPNG(arquivo, grafico, 773, 552);
            
        } catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }
   
}
